package bishiqiangxun;
import java.util.*;
public class Text3 {
    //题目 : 笔试强训day41第三题 :过桥
    //算法 :  贪心 + 动态规划

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        //我让他一直前进   贪心  只要大于0 的进行  判断
        //dp[i]  表示到达i下标花费的最少时间
        int n = in.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n;i++) {
            arr[i] = in.nextInt();
        }
        int[] dp = new int[n];
        //填充成最大值  好用来判断  如果一直是最大值  说明到达不了这个位置
        Arrays.fill(dp,Integer.MAX_VALUE);
        dp[0] = 0; //就是从0下标开始脱身  用时是0
        for(int i = 0; i < n; i++) {
            if(dp[i] == Integer.MAX_VALUE) {
                //到不了   直接返回
                System.out.println(-1);
                break;
            }

            if(arr[i] > 0) {
                //只有大于0  才能前进
                int j = 1;
                while(j <= arr[i] && i + j < n) {
                    dp[i + j] = Math.min(dp[i+j],dp[i] +1);
                    j++;
                }
            }
        }
        if(dp[n - 1] != Integer.MAX_VALUE) {
            System.out.println(dp[n-1]);
        }
    }
}
